
#include "Identifiant.h"

//Constructeur

Identifiant::Identifiant() : Parametre()
{

}

// Retourne l'identifiant

string Identifiant::getIdentifiant() const {
	return m_identifiant;
}

//permet d'envoyer l'identifiant dans le langage Lobo

void Identifiant::setParametre(string identifiant) {
	int err;
	regex_t preg;
	const char *str_request = identifiant.c_str();
	const char *str_regex = "^[a-zA-Z]+[a-zA-Z_]*$";

	err = regcomp (&preg, str_regex, REG_NOSUB | REG_EXTENDED);

	if (err == 0)
	{
		int match;

		match = regexec (&preg, str_request, 0, NULL, 0);
		regfree (&preg);
		try{ // Si l'identifiant est invalide alors une exception est levé et l'identifiant sera "errorId"
			if (match == 0)
			{
				m_identifiant = identifiant;
			}else{
				throw 0;
			}
		}catch(int error){
			std::cerr << identifiant+" est un Identifiant non valide" << std::endl;
			m_identifiant = "errorId";
		}
	}
}

// Retourne l'identifiant qui peut être utilisé dans le programme en C++

std::string Identifiant::toString() const {
	return m_identifiant;
}

